namespace C4F.DevKit.Bluetooth.ObjectExchange
{
    /// <summary>
    /// ObjectExchange response codes.
    /// </summary>
    internal enum ObjectExchangeResponseCode : byte
    {
        /// <summary>
        /// Represents the Continue response code.
        /// It means that the Object Exchange Service has not rejected the 
        /// initial part of the request, and the user should continue.
        /// </summary>
        Continue = 0x10,

        /// <summary>
        /// Represents the Continue response code (with final bit set).
        /// It means that the Object Exchange Service has not rejected the 
        /// initial part of the request, and the user should continue.
        /// </summary>
        ContinueFinal = 0x90,

        /// <summary>
        /// Represents the Success (OK) response code.
        /// It means that the request has succeeded.
        /// </summary>
        Success = 0x20,

        /// <summary>
        /// Represents the Success (OK) response code (with final bit set).
        /// It means that the request has succeeded.
        /// </summary>
        SuccessFinal = 0xA0,

        /// <summary>
        /// Represents the Created response code.
        /// It means that the request has been fulfilled and has resulted in a
        /// new resource being created.
        /// </summary>
        Created = 0x21,

        /// <summary>
        /// Represents the Created response code (with final bit set).
        /// It means that the request has been fulfilled and has resulted in a 
        /// new resource being created.
        /// </summary>
        CreatedFinal = 0xA1,

        /// <summary>
        /// Represents the Accepted response code.
        /// It means the request has been accepted for processing, but the 
        /// processing has not been completed.
        /// </summary>
        Accepted = 0x22,

        /// <summary>
        /// Represents the Accepted response code (with final bit set).
        /// It means the request has been accepted for processing, but the 
        /// processing has not been completed.
        /// </summary>
        AcceptedFinal = 0xA2,

        /// <summary>
        /// Represents the Non-Authoritative Information response code.
        /// It means that the returned headers are not the definitive set as
        /// available from the origin Object Exchange Service, but are gathered
        /// from a local or a third-party copy.
        /// </summary>
        NonAuthoritativeInformation = 0x23,

        /// <summary>
        /// Represents the Non-Authoritative Information response code (with 
        /// final bit set).
        /// It means that the returned headers are not the definitive set as
        /// available from the origin Object Exchange Service, but are gathered
        /// from a local or a third-party copy.
        /// </summary>
        NonAuthoritativeInformationFinal = 0xA3,

        /// <summary>
        /// Represents the No Content response code.
        /// It means that the Object Exchange Service has fulfilled the request
        /// but does not need to return any output.
        /// </summary>
        NoContent = 0x24,

        /// <summary>
        /// Represents the No Content response code (with final bit set).
        /// It means that the Object Exchange Service has fulfilled the request
        /// but does not need to return any output.
        /// </summary>
        NoContentFinal = 0xA4,

        /// <summary>
        /// Represents the Reset Content response code.
        /// It means that the Object Exchange Service has fulfilled the request
        /// and the client should reset the document view which caused the 
        /// request to be sent.
        /// </summary>
        ResetContent = 0x25,

        /// <summary>
        /// Represents the Reset Content response code (with final bit set).
        /// It means that the Object Exchange Service has fulfilled the request
        /// and the client should reset the document view which caused the 
        /// request to be sent.
        /// </summary>
        ResetContentFinal = 0xA5,

        /// <summary>
        /// Represents the Partial Content response code.
        /// It means that the server has fulfilled the partial GET request for 
        /// the resource.
        /// </summary>
        PartialContent = 0x26,

        /// <summary>
        /// Represents the Partial Content response code (with final bit set).
        /// It means that the server has fulfilled the partial GET request for 
        /// the resource.
        /// </summary>
        PartialContentFinal = 0xA6,

        /// <summary>
        /// Represents the Multiple Choices response code.
        /// It means that there are several resources that match this request, 
        /// and the user was redirected to one of them.
        /// </summary>
        MultipleChoices = 0x30,

        /// <summary>
        /// Represents the Multiple Choices response code (with final bit set).
        /// It means that there are several resources that match this request, 
        /// and the user was redirected to one of them.
        /// </summary>
        MultipleChoicesFinal = 0xB0,

        /// <summary>
        /// Represents the Moved Permanently response code.
        /// It means that the requested resource has been assigned a new 
        /// permanent URI and any future references to this resource should use
        /// the new URI.
        /// </summary>
        MovedPermanently = 0x31,

        /// <summary>
        /// Represents the Moved Permanently response code (with final bit set).
        /// It means that the requested resource has been assigned a new 
        /// permanent URI and any future references to this resource should use
        /// the new URI.
        /// </summary>
        MovedPermanentlyFinal = 0xB1,

        /// <summary>
        /// Represents the Moved Temporarily response code.
        /// It means that the requested resource has temporarily been assigned 
        /// a new URI.
        /// </summary>
        MovedTemporarily = 0x32,

        /// <summary>
        /// Represents the Moved Temporarily response code (with final bit set).
        /// It means that the requested resource has temporarily been assigned 
        /// a new URI.
        /// </summary>
        MovedTemporarilyFinal = 0xB2,

        /// <summary>
        /// Represents the See Other response code.
        /// It means that the response to the request can be found under a 
        /// different URI and should be retrieved from the new URI.
        /// </summary>
        SeeOther = 0x33,

        /// <summary>
        /// Represents the See Other response code (with final bit set).
        /// It means that the response to the request can be found under a 
        /// different URI and should be retrieved from the new URI.
        /// </summary>
        SeeOtherFinal = 0xB3,

        /// <summary>
        /// Represents the Not modified response code.
        /// It means that the document has not been modified since the last 
        /// request, and the locally cached copy should be used instead.
        /// </summary>
        NotModified = 0x34,

        /// <summary>
        /// Represents the Not modified response code (with final bit set).
        /// It means that the document has not been modified since the last 
        /// request, and the locally cached copy should be used instead.
        /// </summary>
        NotModifiedFinal = 0xB4,

        /// <summary>
        /// Represents the Use Proxy response code.
        /// It means that the requested resource must be accessed through a
        /// proxy.
        /// </summary>
        UseProxy = 0x35,

        /// <summary>
        /// Represents the Use Proxy response code (with final bit set).
        /// It means that the requested resource must be accessed through a
        /// proxy.
        /// </summary>
        UseProxyFinal = 0xB5,

        /// <summary>
        /// Represents the Bad Request response code.
        /// It means that the request could not be understood by the Object
        /// Exchange Service.
        /// </summary>
        BadRequest = 0x40,

        /// <summary>
        /// Represents the Bad Request response code (with final bit set).
        /// It means that the request could not be understood by the Object
        /// Exchange Service.
        /// </summary>
        BadRequestFinal = 0xC0,

        /// <summary>
        /// Represents the Unauthorized response code.
        /// It means that the request requires user authentication.
        /// </summary>
        Unauthorized = 0x41,

        /// <summary>
        /// Represents the Unauthorized response code (with final bit set).
        /// It means that the request requires user authentication.
        /// </summary>
        UnauthorizedFinal = 0xC1,

        /// <summary>
        /// Represents the Payment required response code.
        /// This code is reserved for future use.
        /// </summary>
        PaymentRequired = 0x42,

        /// <summary>
        /// Represents the Payment required response code (with final bit set).
        /// This code is reserved for future use.
        /// </summary>
        PaymentRequiredFinal = 0xC2,

        /// <summary>
        /// Represents the Forbidden response code.
        /// It means that the server understood the request, but is refusing to
        /// fulfill it. Authorization will not help.
        /// </summary>
        Forbidden = 0x43,

        /// <summary>
        /// Represents the Forbidden response code (with final bit set).
        /// It means that the server understood the request, but is refusing to
        /// fulfill it. Authorization will not help.
        /// </summary>
        ForbiddenFinal = 0xC3,

        /// <summary>
        /// Represents the Not Found response code.
        /// It means that the Object Exchange Service has not found anything
        /// matching the URI.
        /// </summary>
        NotFound = 0x44,

        /// <summary>
        /// Represents the Not Found response code (with final bit set).
        /// It means that the Object Exchange Service has not found anything 
        /// matching the URI.
        /// </summary>
        NotFoundFinal = 0xC4,

        /// <summary>
        /// Represents the Method not allowed response code.
        /// It means that the request method is not allowed.
        /// </summary>
        MethodNotAllowed = 0x45,

        /// <summary>
        /// Represents the Method not allowed response code (with final bit set).
        /// It means that the request method is not allowed.
        /// </summary>
        MethodNotAllowedFinal = 0xC5,

        /// <summary>
        /// Represents the Not Acceptable response code.
        /// It means that the Object Exchange Service is not capable of handling
        /// the response according to the user's request.
        /// </summary>
        NotAcceptable = 0x46,

        /// <summary>
        /// Represents the Not Acceptable response code (with final bit set).
        /// It means that the Object Exchange Service is not capable of handling
        /// the response according to the user's request.
        /// </summary>
        NotAcceptableFinal = 0xC6,

        /// <summary>
        /// Represents the Proxy Authentication required response code.
        /// This code indicates that the user must first authenticate itself 
        /// with the proxy.
        /// </summary>
        ProxyAuthenticationRequired = 0x47,

        /// <summary>
        /// Represents the Proxy Authentication required response code (with 
        /// final bit set).
        /// This code indicates that the user must first authenticate itself 
        /// with the proxy.
        /// </summary>
        ProxyAuthenticationRequiredFinal = 0xC7,

        /// <summary>
        /// Represents the Request Time Out response code.
        /// It means that the user did not produce a request within the time 
        /// that the Object Exchange Service was prepared to wait.
        /// </summary>
        RequestTimeOut = 0x48,

        /// <summary>
        /// Represents the Request Time Out response code (with final bit set).
        /// It means that the user did not produce a request within the time 
        /// that the Object Exchange Service was prepared to wait.
        /// </summary>
        RequestTimeOutFinal = 0xC8,

        /// <summary>
        /// Represents the Conflict response code.
        /// It means that the request could not be completed due to a conflict
        /// with the current state of the resource. 
        /// </summary>
        Conflict = 0x49,

        /// <summary>
        /// Represents the Conflict response code (with final bit set).
        /// It means that the request could not be completed due to a conflict
        /// with the current state of the resource. 
        /// </summary>
        ConflictFinal = 0xC9,

        /// <summary>
        /// Represents the Gone response code.
        /// It means that the requested resource is no longer available at the
        /// server and no forwarding address is known.
        /// </summary>
        Gone = 0x4A,

        /// <summary>
        /// Represents the Gone response code (with final bit set).
        /// It means that the requested resource is no longer available at the
        /// server and no forwarding address is known.
        /// </summary>
        GoneFinal = 0xCA,

        /// <summary>
        /// Represents the Length Required response code.
        /// It means that the server refuses to accept the request without a 
        /// defined Content-Length header.
        /// </summary>
        LengthRequired = 0x4B,

        /// <summary>
        /// Represents the Length Required response code (with final bit set).
        /// It means that the server refuses to accept the request without a 
        /// defined Content-Length header.
        /// </summary>
        LengthRequiredFinal = 0xCB,

        /// <summary>
        /// Represents the Precondition failed response code.
        /// It means that the precondition given in one or more of the header
        /// fields failed when it was tested on the remote device.
        /// </summary>
        PreconditionFailed = 0x4C,

        /// <summary>
        /// Represents the Precondition failed response code (with final bit 
        /// set).
        /// It means that the precondition given in one or more of the header
        /// fields failed when it was tested on the remote device.
        /// </summary>
        PreconditionFailedFinal = 0xCC,

        /// <summary>
        /// Represents the Requested entity too large response code.
        /// It means that the Object Exchange Service is refusing to process a
        /// request because the request entity is larger than the server is 
        /// willing or able to process.
        /// </summary>
        RequestedEntityTooLarge = 0x4D,

        /// <summary>
        /// Represents the Requested entity too large response code (with final
        /// bit set).
        /// It means that the Object Exchange Service is refusing to process a
        /// request because the request entity is larger than the server is 
        /// willing or able to process.
        /// </summary>
        RequestedEntityTooLargeFinal = 0xCD,

        /// <summary>
        /// Represents the Request URL too large response code.
        /// It means that the Object Exchange Service is refusing to service the
        /// request because the requested URL is too long.
        /// </summary>
        RequestUrlTooLarge = 0x4E,

        /// <summary>
        /// Represents the Request URL too large response code (with final bit
        /// set).
        /// It means that the Object Exchange Service is refusing to service the
        /// request because the requested URL is too long.
        /// </summary>
        RequestUrlTooLargeFinal = 0xCE,

        /// <summary>
        /// Represents the Unsupported media type response code.
        /// It means that the Object Exchange Service is refusing to service the
        /// request because the user does not support the response format.
        /// </summary>
        UnsupportedMediaType = 0x4F,

        /// <summary>
        /// Represents the Unsupported media type response code (with final bit
        /// set).
        /// It means that the Object Exchange Service is refusing to service the
        /// request because the user does not support the response format.
        /// </summary>
        UnsupportedMediaTypeFinal = 0xCF,

        /// <summary>
        /// Represents the Internal Server Error response code.
        /// It means that the Object Exchange Service encountered an unexpected
        /// condition which prevented it from fulfilling the request.
        /// </summary>
        InternalServerError = 0x50,

        /// <summary>
        /// Represents the Internal Server Error response code (with final bit
        /// set).
        /// It means that the Object Exchange Service encountered an unexpected 
        /// condition which prevented it from fulfilling the request.
        /// </summary>
        InternalServerErrorFinal = 0xD0,

        /// <summary>
        /// Represents the Not Implemented response code.
        /// It means that the Object Exchange Service does not support the 
        /// functionality required to fulfill the request.
        /// </summary>
        NotImplemented = 0x51,

        /// <summary>
        /// Represents the Not Implemented response code (with final bit set).
        /// It means that the Object Exchange Service does not support the
        /// functionality required to fulfill the request.
        /// </summary>
        NotImplementedFinal = 0xD1,

        /// <summary>
        /// Represents the Bad Gateway response code.
        /// It meanst that the server is a gateway or proxy and received an
        /// invalid response from the upstream server it accessed in attempting
        /// to fulfill the request.
        /// </summary>
        BadGateway = 0x52,

        /// <summary>
        /// Represents the Bad Gateway response code (with final bit set).
        /// It meanst that the server is a gateway or proxy and received an
        /// invalid response from the upstream server it accessed in attempting
        /// to fulfill the request.
        /// </summary>
        BadGatewayFinal = 0xD2,

        /// <summary>
        /// Represents the Service Unavailable response code.
        /// It means that the Object Exchange Service is currently unable to 
        /// handle the request.
        /// </summary>
        ServiceUnavailable = 0x53,

        /// <summary>
        /// Represents the Service Unavailable response code (with final bit 
        /// set).
        /// It means that the Object Exchange Service is currently unable to 
        /// handle the request.
        /// </summary>
        ServiceUnavailableFinal = 0xD3,

        /// <summary>
        /// Represents the Gateway Timeout response code.
        /// This means that the server is a gateway or proxy and did not receive
        /// a timely response from the upstream server.
        /// </summary>
        GatewayTimeout = 0x54,

        /// <summary>
        /// Represents the Gateway Timeout response code (with final bit set).
        /// This means that the server is a gateway or proxy and did not receive
        /// a timely response from the upstream server.
        /// </summary>
        GatewayTimeoutFinal = 0xD4,

        /// <summary>
        /// Represents the HTTP version not supported response code.
        /// It means that the server does not support, or refuses to support, 
        /// the HTTP protocol version that was used in the request.
        /// </summary>
        HttpVersionNotSupported = 0x55,

        /// <summary>
        /// Represents the HTTP version not supported response code (with final
        /// bit set).
        /// It means that the server does not support, or refuses to support, 
        /// the HTTP protocol version that was used in the request.
        /// </summary>
        HttpVersionNotSupportedFinal = 0xD5,

        /// <summary>
        /// Represents the Database Full response code.
        /// </summary>
        DatabaseFull = 0x60,

        /// <summary>
        /// Represents the Database Full response code (with final bit set).
        /// </summary>
        DatabaseFullFinal = 0xE0,

        /// <summary>
        /// Represents the Database Locked response code.
        /// </summary>
        DatabaseLocked = 0x61,

        /// <summary>
        /// Represents the Database Locked response code (with final bit set).
        /// </summary>
        DatabaseLockedFinal = 0xE1
    }
}